package com.soft.testmybatis.mapper;

import com.soft.testmybatis.entity.User;
import com.soft.testmybatis.entity.UserQueryVO;
import org.apache.ibatis.annotations.Select;

import java.util.HashMap;
import java.util.List;

public interface UserMapper {

    // 根据id查询用户信息
    User findUserById(int id);

    // 根据id更新用户信息
    int updateUserById(User user);

    // 根据id删除用户信息
    int deleteUserById(int id);

    // 插入用户信息
    int insertUser(User user);

    // 根据姓名查询用户性别
    String findGenderByName(String name);

    // 按照性别和生日查询用户
    List<User> findUsersByGenderAndBirthday(HashMap<String,Object> map);

    // 根据姓名更新用户的性别
    int updateUserGenderByName(HashMap<String, String> map);

    // 通过性别和姓名查询用户列表，且id值是15或20或25  PS：不允许性别或者姓名为null或者空串
    List<User> findUsersByNameAndGender(UserQueryVO userQueryVO);

    // 根据用户编号，关联查询用户信息及所下订单信息
    User findUserAndOrdersById(int id);

    // 性别和姓名非空查询，且id in(15,20,25)
    @Select({"<script>",
            "select * from user",
            "<where>",
            "<if test ='user.name != null and user.name != \"\"'>",
            "name like concat('%',#{user.name},'%')",
            "</if>",
            "<if test ='user.gender != null and user.gender != \"\"'>",
            "and gender = #{user.gender}",
            "</if>",
            "<if test ='ids != null'>",
            "<foreach collection='ids' item='id' open='and id in (' close=')' separator=','>",
            "#{id}",
            "</foreach>",
            "</if>",
            "</where>",
            "</script>"
    })
    List<User> getUsersByNameAndGender(UserQueryVO userQueryVO);
}
